const Koa = require("koa");
const Router = require("koa-router");
const users = require('./routes/api/users');
const bodyParser = require('koa-bodyparser');
const jwt = require('jsonwebtoken');


const app = new Koa();
const router = new Router();

// 全局配置哪里都能用
app.use(bodyParser());

// 统一提示
// app.use(async (ctx,next) => {
//   ctx.send = (err,status = 0) => {
//     ctx.response.body = {
//       message: err instanceof Error ? err.message : err,
//       status:status
//     }
//   }
//   await next()
// })

// 测试token
router.get('/settoken', async (ctx, next) => {
  // let token = 'Bearer ' + jwt.sign({id:id,name:1}, config.jwtSecretKey);
  let token = jwt.sign({ id: 123 }, 'yj666');
  // localStorage.setItem('testtoken', token)
  ctx.body = token
})
router.get('/gettoken', async (ctx, next) => {
  console.log(ctx.headers.authorization);
  let res = jwt.verify(ctx.headers.authorization,'yj666')
  ctx.body = res;
})
// 路由上注册前缀和路由规则

router.use('/api/users', users)
// 普通路由
router.get("/", async ctx => {
  ctx.body = {
    msg: "hello koa2 url:/",
  };
});

// 把路由注册到app上,router.allowedMethods()中间件是帮助我们处理加工异常请求的,404或者没有返回状态的
app.use(router.routes());
// app.use(router.routes()).use(router.allowedMethods());



// 错误中间件
// app.on('error', (err, ctx) => {
//   console.log('服务器报错了!');
//   ctx.response.body = {
//     status: 0,
//     message:err.message
//   }
// })
// 测试这个中间件
// app.use(async (ctx, next) => {
//   console.log('错误中间件');
//   next()
//   if (ctx.status == 404) {
//     ctx.status = 404;
//     ctx.body = '404页面'
//   } else {
//     console.log(ctx.url)
//   }
// })
// process.env.PORT 可以获取当前项目环节变量中的端口值
// const port = process.env.PORT || 80;
app.listen(80, () => {
  console.log("http://127.0.0.1");
});
